所以我认为它可能与textmate有关,但是我们在一个小团队中工作,并且在git中存在几个相同文件的完整文件冲突的问题,因为一个分支的每一行都附加了^ M.
这个神秘的^M
角色应该做什么,它可能来自哪里?
我们的开发人员在Windows/Mac上使用emacs,在Mac上使用TextMate,在Mac上使用coda,偶尔使用wp-admin文本编辑器.
任何人都有这个问题源于其中一个?
在git-config中,设置core.autocrlf
为true
使git自动为您的平台正确转换行结尾,例如运行此命令进行全局设置:
git config --global core.autocrlf true
有人没有正确转换他们的行尾字符.
我认为这是Windows用户,因为他们喜欢他们的CRLF.Unix喜欢LF和Mac喜欢CR,直到它以Unix方式显示.
^M
是0x0d
,即回车字符.如果您的显示器看起来像
line 1^M line 2^M
然后该文件必须来自Windows,因为Windows上的标准换行序列是CR
LF
(0x0d 0x0a
)而标准换行序列仅由LF
Unices组成.
如果文件来自Mac OS 9或更早版本的系统,您会看到它
line 1^Mline 2^M
因为回车后没有换行.
要使^ M在git中消失,请键入:
git config --global core.whitespace cr-at-eol
致谢:https: //lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/
它们与DOS风格的行结尾和Unix风格之间的区别有关.查看维基百科文章.您可以找到dos2unix工具来帮助,或者只是编写一个小脚本来自行修复它们.
编辑:我在这里找到了以下Python示例代码:
string.replace( str, '\r', '' )
M- :( replace-string"\ r""") code>.
6> 小智..:
而不是查询替换你也可以使用Mx delete-trailing-whitespace
7> CookieMonste..:
我在Mac OS上使用Android Studio(JetBrains IntelliJ IDEA),我的问题是^ M开始出现在GitHub的 pull请求中的某些文件中。对我有用的是更改文件的行分隔符。
在编辑器中打开所需的文件,然后依次转到“
文件”和“
行分隔符”,然后
为您选择最佳选项
(对我而言,这是LF-Unix和OS X(\ n))
根据下一篇文章,此问题是操作系统之间行尾混淆的结果:http :
//jonathonstaff.com/blog/issues-with-line-endings/
您可以在这里找到更多信息:https :
//www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48
8> Jakub Narębs..:
将以下~/.emacs
物品放入您的(或等价物)中
(defun dos2unix ()
"Replace DOS eolns CR LF with Unix eolns CR"
(interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
然后您就可以简单地使用M-x dos2unix
。